package com.itheima.tlias84.controller;


import ch.qos.logback.core.testUtil.RandomUtil;
import com.itheima.tlias84.dto.SelectEmpDetailDTO;
import com.itheima.tlias84.mapper.DeptMapper;
import com.itheima.tlias84.mapper.EmpMapper;
import com.itheima.tlias84.utils.ResultUtil;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 给一个类的属性（成员变量）赋值 有四种方法
 * 1.直接 = 赋值
 * 2. 构造器
 * 3. set方法
 * 4. 反射
 *
 * @Autowired 一般用于在构造器赋值和set方法赋值时
 *
 * 所以说springDI 注入有三种方式
 * 字段属性DI  ； @Resource
 * 构造器DI ：@Autowired
 * set方法DI ： @Autowired
 *
 *
 * @Resource 与 @Autowired 使用
 * 如果一个类中需要注入很少量的其他类的Bean对象   -》  优先使用@Resource
 * 如果一个类中需要注入很多的其他类的Bean对象   -》  优先使用@Autowired  可以基于lombok实现构造器注入
 *
 *
 */
@RestController
@Data
@AllArgsConstructor
public class TestAutowiredController {

    EmpMapper empMapper;
    DeptMapper deptMapper;




    @GetMapping("a")
    public ResultUtil a(){
        SelectEmpDetailDTO selectEmpDetailDTO = empMapper.selectEmpById(1);
        return ResultUtil.success(selectEmpDetailDTO);
    }
}
